package com.itany.corejava.code08_常用类.枚举;

/**
 * @author 石小俊
 * 2024年07月23日 11:04
 */
public enum Season {

    // 由于枚举类型的构造方法的私有的,因此必须在内部创建对象
    // 且创建的对象必须能够被外部访问
    // 因此,修饰符必须是public,且创建的对象必须是静态常量
    // public static final Season SEASON = new Season("春天",1,3);
    // 在枚举中,由于很多内容必须符合枚举规则
    // 因此,在创建对象时会自动添加对应修饰,需要省略指定部位内容
    // 如果创建多个对象,那么多个对象之间以逗号分割
    SEASON("春天", 1, 3),
    SUMMER("夏天", 4, 6),
    AUTUMN("秋天", 7, 9),
    WINTER("冬天", 10, 12),
    ALL;
    // 在枚举中,理论上可以定义类中存在的任意成员
    private String name;    // 季节名
    private int startMonth; // 季节开始的月份
    private int endMonth;   // 季节结束的月份

    // 对于构造方法,必须是私有的,不允许外部访问
    // 如果外部可以访问,则可以自定义内容了
    // 本身枚举就是为了限制外部定义内容
    // 由于枚举中的构造方法必须是私有的,因此private修饰符可以省略
    // 既然构造方法是私有的,因此,必须在内部创建对象
    Season() {
    }

    Season(String name, int startMonth, int endMonth) {
        this.name = name;
        this.startMonth = startMonth;
        this.endMonth = endMonth;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getStartMonth() {
        return startMonth;
    }

    public void setStartMonth(int startMonth) {
        this.startMonth = startMonth;
    }

    public int getEndMonth() {
        return endMonth;
    }

    public void setEndMonth(int endMonth) {
        this.endMonth = endMonth;
    }
}
